home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / lib / ubiquity / apt-setup / apt-setup-verify < prev    next >
Text File  |  2009-10-01  |  3KB  |  153 lines

  1. #!/bin/sh
  2. # verify and optionally save out the file
  3. set -e
  4.  
  5. ASV_TIMEOUT="${ASV_TIMEOUT:--o Acquire::http::Timeout=10}"
  6.  
  7. NL="
  8. "
  9.  
  10. NOTEST=""
  11. PROGRESS=""
  12. PROGRESS_FROM=""
  13. PROGRESS_TO=""
  14. file=""
  15. while [ "$1" ]; do
  16.     case "$1" in
  17.         --invalid)
  18.         NOTEST=1 ;;
  19.         --from)
  20.         shift
  21.         PROGRESS_FROM=$1 ;;
  22.         --to)
  23.         shift
  24.         PROGRESS_TO=$1 ;;
  25.         *)
  26.         if [ -z "$file" ]; then
  27.             file="$1"
  28.         else
  29.             saveto="$1"
  30.         fi ;;
  31.     esac
  32.     shift
  33. done
  34.  
  35. if [ "$PROGRESS_FROM" ] && [ "$PROGRESS_TO" ] && \
  36.    [ $PROGRESS_FROM -lt $PROGRESS_TO ]; then
  37.     PROGRESS=1
  38. else
  39.     DAP_OPTS="--no-progress"
  40. fi
  41.  
  42. logoutput=""
  43. if [ "$CATCHLOG" ]; then
  44.     logoutput="log-output -t apt-setup"
  45. fi
  46.  
  47. chroot=
  48. intarget=
  49. if [ "$ROOT" ]; then
  50.     chroot=chroot
  51.     intarget=in-target
  52. fi
  53.  
  54. saveline () {
  55.     if [ "$saveto" ]; then
  56.         echo "$*" >> $saveto
  57.     fi
  58. }
  59.  
  60. # Cancellation may still have reliability problems:
  61. # - application does not seem to always react to a cancel signal?
  62. # - debconf-apt-progress sometimes fails to exit with code 30 when cancelled?
  63. # See also thread http://lists.debian.org/debian-boot/2008/01/msg00094.html
  64. valid () {
  65.     local line="$1"
  66.     local dap_opts="$2"
  67.  
  68.     [ "${line%%:*}" != "deb cdrom" ] || return 0
  69.  
  70.     # Ubuntu change: network sources are always valid; apt will cope
  71.     # gracefully later, even though the network may not be available
  72.     # now.
  73.     return 0
  74.  
  75.     tmp=$($chroot $ROOT tempfile)
  76.     echo "$line" > $ROOT$tmp
  77.     code=0
  78.     $logoutput $intarget debconf-apt-progress --logstderr $dap_opts -- \
  79.         apt-get -o APT::Get::List-Cleanup=false \
  80.             -o Dir::Etc::sourcelist=$tmp $ASV_TIMEOUT update || code=$?
  81.     if [ $code -eq 30 ]; then
  82.         exit 30 # canceled
  83.     elif [ $code -eq 0 ]; then
  84.         rm -f $ROOT$tmp
  85.     else
  86.         rm -f $ROOT$tmp
  87.         false
  88.     fi
  89. }
  90.  
  91. # Ubuntu change: need to run apt-get update for everything in one go here,
  92. # since we've disabled the run in the valid function above. Doing everything
  93. # in one go also allows apt-get to cache resolver failures and connection
  94. # timeouts and so be significantly faster when the network is unavailable.
  95. tmp=$($chroot $ROOT tempfile)
  96. cat "$file" > $ROOT$tmp
  97. if [ "$PROGRESS" ]; then
  98.     DAP_OPTS="--dlwaypoint 100 --from $PROGRESS_FROM --to $PROGRESS_TO"
  99. fi
  100. $logoutput $intarget debconf-apt-progress --logstderr $DAP_OPTS -- \
  101.     apt-get -o APT::Get::List-Cleanup=false \
  102.         -o Dir::Etc::sourcelist=$tmp $ASV_TIMEOUT update || true
  103. rm -f $ROOT$tmp
  104.  
  105. if [ "$PROGRESS" ]; then
  106.     tot_items=$(grep -Ev "^(#.*|)[[:space:]]*$" $file | wc -l)
  107.     p_from=$PROGRESS_FROM
  108. fi
  109.  
  110. items=0
  111. gooditems=0
  112.  
  113. OLDIFS="$IFS"
  114. IFS="$NL"
  115. # Can't just iterate over $(cat $file) because that kills newlines, so
  116. # introduce a dummy colon.
  117. for line in $(sed 's/^/:/' $file); do
  118.     IFS="$OLDIFS"
  119.     line="${line#:}"
  120.     if echo "$line" | grep -Evq "^(#.*|)[[:space:]]*$"; then
  121.         items=$(expr $items + 1)
  122.         # Write blank line between generators
  123.         if [ $items = 1 ] && [ -f "$saveto" ]; then
  124.             saveline ""
  125.         fi
  126.  
  127.         if [ "$PROGRESS" ]; then
  128.             [ $items -eq 1 ] || p_from=$p_to
  129.             p_to=$(expr $PROGRESS_FROM + \
  130.                 \( $PROGRESS_TO - $PROGRESS_FROM \) \* \
  131.                 $items / $tot_items)
  132.             DAP_OPTS="--dlwaypoint 100 --from $p_from --to $p_to"
  133.         fi
  134.  
  135.         if [ -z "$NOTEST" ] && valid "$line" "$DAP_OPTS"; then
  136.             gooditems=$(expr $gooditems + 1)
  137.             saveline "$line"
  138.         else
  139.             saveline "# Line commented out by installer because it failed to verify:"
  140.             saveline "#$line"
  141.         fi
  142.     else
  143.         # Ignore leading empty lines
  144.         if [ $items -ne 0 ] || [ "$line" ]; then
  145.             saveline "$line"
  146.         fi
  147.     fi
  148. done
  149.  
  150. if [ $gooditems -ne $items ]; then
  151.     exit 1
  152. fi
  153.